Picoblaze
Operaciones de entrada: Temporización
Picoblaze
Operaciones de salida: Lógica de la interfaz
Picoblaze
Operaciones de salida: Lógica de la interfaz
Picoblaze
Operaciones de salida: Temporización
Picoblaze
Proceso básico de diseño
1. Escritura del programa en código assembly. El archivo poseerá la
extensión ”psm” (por ejemplo programa.psm)
2. Ensamblado del archivo ”psm”. Se utiliza la aplicación KCPSM3.exe, que genera un archivo “vhd” (con el mismo nombre que el del archivo “psm”, por ejemplo programa.vhd) que contiene la descripción de la memoria de instrucciones
c:>KCPSM3AssemblerKCPSM.exe programa.psm -> programa.vhd
3. Inclusión de los archivos .vhd correspondientes al módulo del picoblaze y de la memoria de instrucciones, en un proyecto creado con el ISE
4. Generación del bitsteam (archivo de programación)
Picoblaze
Declaración del componente kcpsm3
component kcpsm3
port (
address : out std_logic_vector(9 downto 0);
instruction : in std_logic_vector(17 downto 0);
port_id : out std_logic_vector(7 downto 0);
write_strobe : out std_logic;
out_port : out std_logic_vector(7 downto 0);
read_strobe : out std_logic;
in_port : in std_logic_vector(7 downto 0);
interrupt : in std_logic;
interrupt_ack : out std_logic;
reset : in std_logic;
clk : in std_logic
);
end component;
Picoblaze
Declaración del componente bloque de memoria
component myprog
port (
address : in std_logic_vector(9 downto 0);
instruction : out std_logic_vector(17 downto 0);
clk : in std_logic
);
end component;
(Gp:) Nombre derivado del archivo .psm
Picoblaze
Ejemplo de código assembly
El siguiente ejemplo implementa la lectura de los switches del kit y
muestra cada valor a través de los leds del mismo
; Definición de las direcciones de los puertos
CONSTANT switch_in , 00 ; puerto de entrada (switches)
CONSTANT leds_out , 01 ; puerto de salida (leds)
; Inicio
start: INPUT s0, 00 ; se leen los switches y se lo almacena
; en el registro s0
OUTPUT s0, leds_out ; se escribe el contenido del registro s0 ; al puerto de salida (leds)
JUMP start ; loop back to start
Picoblaze
Multiplicación con operandos de 8 bits
– Utilizando el Core Generator para instanciar un bloque
multiplicador
Picoblaze
mult_8x8:
NAMEREG s0, multiplicando
NAMEREG s1, multiplicador
NAMEREG s3, result_msb ; MSB del resultado
NAMEREG s4, result_lsb ; LSB del resultado
;
; Definicion de los puertos como constantes
CONSTANT multiplicador_lsb, 00
CONSTANT multiplicador_msb, 01
;
; Envio del multiplicando y del multiplicador a los registros de la FPGA conectados
; a las entradas del bloque multiplicador
OUTPUT multiplicando, multiplicador_lsb
OUTPUT multiplicador, multiplicador_msb
;
; Entrada del resultado emitido por el bloque multiplicador.
INPUT result_lsb, multiplicador_lsb
INPUT result_msb, multiplicador_msb
Multiplicación con operandos de 8 bits
– Código assembly
Página anterior | Volver al principio del trabajo | Página siguiente |